//
//  TableShowImageConfig.swift
//  CooperSwift_Example
//
//  Created by 计海峰 on 2021/10/13.
//  Copyright © 2021 CocoaPods. All rights reserved.
//

import UIKit
import Kingfisher

public class TableShowImageConfig: NSObject, ViewConsProtocol, ViewControlProtocol {
    
    // 图片计算的实际大小
    public var imageWidth: CGFloat = 0.0
    public var imageHeight: CGFloat = 0.0
    
    // 图片资源大小
    var imageSize: CGSize = .zero
    
    // imageview 的大小
    public var imageViewSize: CGSize = .zero
    
    // 是否延迟加载 需要controller实现LazyLoad cell 生成时候 添加任务
    public var isDelay = false
    
    // 适应刷新高度
    public var isFit = true
    
    /// 计算图片的显示大小
    /// - Parameter size: 图大小
    /// - Returns: imageview 大小
    func updateWidthOrHeight(_ size: CGSize) -> CGSize {
        /// 固定大小
        debugPrint("⭐️")
        if !imageViewSize.width.isZero && !imageSize.height.isZero { /// 已经有过缓存高度
            return imageViewSize
        }
        if vHeightCons > 0 && vWidthCons > 0 { /// 已经有过赋值 或者是固定值
            imageViewSize = CGSize(vWidthCons, vHeightCons)
            return imageViewSize
        }
        /// 尺寸不合格
        if !(size.width > 0 && size.height > 0) {
            return .zero
        }
        imageSize = size
        let scale = size.height / size.width /// 比例
        /// 图片宽度 有最大值
        if vMaxWidthCons > 0 {
            if size.width < vMaxWidthCons  {
                imageWidth = size.width
                imageHeight = size.height
            }
            if size.width >= vMaxWidthCons {
                imageWidth = vMaxWidthCons
                imageHeight = imageWidth * scale
            }
        }else
        /// 图片高度有最大值
        if vMaxHeightCons > 0 {
            if size.height < vMaxHeightCons {
                imageHeight = size.height
                imageWidth = size.height / scale
            }
            if size.height >= vMaxHeightCons {
                imageHeight = vMaxHeightCons
                imageWidth = imageHeight * scale
            }
        }
        /// 放到配置中
        imageViewSize = CGSize(imageWidth, imageHeight)
        frame = CGRect(vLeftCons, vTopCons, imageViewSize.width, imageViewSize.height)
        vWidthCons = size.width
        vHeightCons = size.height
        return imageViewSize
    }
    
}
